<?php
/**
 * Clase Base DP para BaseImClasificacionDP
 *
 * @package    
 * @subpackage BaseImClasificacionDP
 * @author     hans
 * @version    SVN:: BaseImClasificacionDP.class.php,v 1.1 2012-03-17 01:30:56 Hans.parra Exp $
 */

require_once('class/common/arrayClass.class.php');
require_once('class/im/fam/BN/ImClasificacionBN.class.php');

abstract class BaseImClasificacionDP extends ImClasificacionBN
{
  /* N�mero de registros afectados */
  private $nRowsAffected;

  public function __construct($bSetDefault = true)
  {
    if( $bSetDefault instanceof ImClasificacionBN )
    {
      $o_ImClasificacionBN = $bSetDefault;
      if($o_ImClasificacionBN->getClasificId()) : $this->setClasificId($o_ImClasificacionBN->getClasificId()); endif;
      if($o_ImClasificacionBN->getDescripcion()) : $this->setDescripcion($o_ImClasificacionBN->getDescripcion()); endif;
      if($o_ImClasificacionBN->getReferencia()) : $this->setReferencia($o_ImClasificacionBN->getReferencia()); endif;
      if($o_ImClasificacionBN->getActivo()) : $this->setActivo($o_ImClasificacionBN->getActivo()); endif;
    }
  }

  /* Obtiene el n�mero de registros afectados */
  public function getRowsAffected()
  {
    return $this->nRowsAffected;
  }

  public function save()
  {
    try
    {
      $o_conexion = new BaseDatos();
      $con = $o_conexion->conectar();
      $sql = "SELECT IF(MAX(cl_clasificId),(MAX(cl_clasificId)+1), 1) AS Maximo FROM im_clasificacion;";
      $result = mysql_query($sql);
      $row = mysql_fetch_array($result);
      $this->setClasificId($row[0]);

      if($this->getClasificId()){
        $a_Fields = array();

        if($this->getClasificId()) : $a_Fields['cl_clasificId'] = ($this->getClasificId()); endif;
        if($this->getDescripcion()) : $a_Fields['cl_descripcion'] = ($this->getDescripcion()); endif;
        if($this->getReferencia()) : $a_Fields['cl_referencia'] = ($this->getReferencia()); endif;
        if($this->getActivo()) : $a_Fields['cl_activo'] = ($this->getActivo()); endif;

        $sStringField = arrayClass::implode_keys(',', $a_Fields);
        $sStringValue = "'".implode("','", $a_Fields)."'";

        $sql = "INSERT INTO im_clasificacion (".$sStringField.") VALUES (".$sStringValue.");";
        $result = mysql_query($sql);
        if($result)
        {
          $this->nRowsAffected = (int) mysql_affected_rows($oLink);
        }
        else
        {
          throw new Exception( mysql_error() );
        }
      }
      else
      {
        throw new Exception( 'El id no esta registrado.');
      }
    }
    catch ( Exception $o_Error )
    {
      throw new Exception($o_Error->getMessage().' en '.$o_Error->getFile().' linea '.$o_Error->getLine());
    }
    return true;
  }

  public function update()
  {
    try
    {
      if($this->getClasificId())
      {
        $a_Fields = array();

        if($this->getClasificId()) : $a_Fields['cl_clasificId'] = ($this->getClasificId()); endif;
        if($this->getDescripcion()) : $a_Fields['cl_descripcion'] = ($this->getDescripcion()); endif;
        if($this->getReferencia()) : $a_Fields['cl_referencia'] = ($this->getReferencia()); endif;
        if($this->getActivo()) : $a_Fields['cl_activo'] = ($this->getActivo()); endif;

        $sStringField = arrayClass::implode_key_value(',', $a_Fields);

        $o_conexion = new BaseDatos();
        $con = $o_conexion->conectar();
        $sql = "UPDATE im_clasificacion SET ".$sStringField." WHERE 1 AND cl_clasificId='".$this->getClasificId()."';";
        $result = mysql_query($sql);
        if($result)
        {
          $this->nRowsAffected = (int) mysql_affected_rows($oLink);
        }
        else
        {
          throw new Exception( mysql_error() );
        }
      }
      else
      {
        throw new Exception( 'El id no esta registrado.');
      }
    }
    catch ( Exception $o_Error )
    {
      throw new Exception($o_Error->getMessage().' en '.$o_Error->getFile().' linea '.$o_Error->getLine());
    }
    return true;
  }

  public function delete()
  {
    try
    {
      if($this->getClasificId())
      {
        $a_Fields = array();

        $o_conexion = new BaseDatos();
        $con = $o_conexion->conectar();
        $sql = "DELETE FROM im_clasificacion WHERE 1 AND cl_clasificId='".$this->getClasificId()."';"; 
        $result = mysql_query($sql);
        if($result)
        {
          $this->nRowsAffected = (int) mysql_affected_rows($oLink);
        }
        else
        {
          throw new Exception( mysql_error($oLink) );
        }
      }
      else
      {
        throw new Exception( 'El id no esta registrado.');
      }
    }
    catch ( Exception $o_Error )
    {
      throw new Exception($o_Error->getMessage().' en '.$o_Error->getFile().' linea '.$o_Error->getLine());
    }
    return true;
  }

  /* B�squeda del registro por la llave primaria */
  public static function selectByPK($vClasificId)
  {
    try
    {
      $o_conexion = new BaseDatos();
      $con = $o_conexion->conectar();
      $sql = "SELECT cl_clasificId, cl_descripcion, cl_referencia, cl_activo FROM im_clasificacion WHERE 1 AND cl_clasificId='".$vClasificId."'; ";
        $result = mysql_query($sql);
      $o_Propel = $result ? mysql_fetch_object($result) : null;
      
      return $o_Propel?self::insertObjectBN($o_Propel):null;

    }catch ( Exception $o_Error ){
      throw new Exception($o_Error->getMessage().' en '.$o_Error->getFile().' linea '.$o_Error->getLine());
    }
  }

  /* Devuelve un objeto con m�todos de acceso */
  private function insertObjectBN($o_propel){
    $o_ImClasificacionDP = new ImClasificacionBN();
    $o_ImClasificacionDP->setClasificId($o_propel->cl_clasificId);
    $o_ImClasificacionDP->setDescripcion($o_propel->cl_descripcion);
    $o_ImClasificacionDP->setReferencia($o_propel->cl_referencia);
    $o_ImClasificacionDP->setActivo($o_propel->cl_activo);
    return $o_ImClasificacionDP;
  }
}